package com.question.business.org.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.question.business.org.entity.Org;
import com.question.business.org.model.ao.*;
import com.question.business.org.model.vo.OrgAddVO;
import com.question.business.org.model.vo.OrgDetailVO;
import com.question.business.org.model.vo.OrgDropDownVO;
import com.question.business.org.model.vo.OrgVO;

import javax.servlet.ServletOutputStream;
import java.util.List;

/**
 * 机构服务
 *
 * @author star
 * @since 2023-09-14
 */
public interface IOrgService extends IService<Org> {

    /**
     * 机构分页查询
     *
     * @param ao 请求参数
     * @return Page<OrgVO> 响应参数
     */
    Page<OrgVO> queryOrgPage(OrgPageAO ao);

    /**
     * 机构明细查询
     *
     * @param id 机构ID
     * @return OrgDetailVO 响应参数
     */
    OrgDetailVO queryOrgDetail(String id);

    /**
     * 机构新增数据
     *
     * @param ao 请求参数
     * @return OrgAddVO 响应参数
     */
    OrgAddVO addOrg(OrgAddAO ao);

    /**
     * 机构修改数据
     *
     * @param ao 数据
     */
    void updateOrg(OrgUpdateAO ao);

    /**
     * 机构删除数据
     *
     * @param id 机构ID
     */
    void deleteOrg(String id);

    /**
     * 机构批量删除数据
     *
     * @param ids 机构ID
     */
    void deleteBatchOrg(List<String> ids);

    /**
     * 机构导出数据
     *
     * @param ao     请求参数
     * @param stream 输出流
     */
    void exportOrg(OrgPageAO ao, ServletOutputStream stream);

    /**
     * 机构启用、停用
     *
     * @param ao 请求参数
     */
    void enableOrg(OrgEnabledAO ao);

    /**
     * 机构下拉列表查询
     *
     * @param ao 请求参数
     * @return List<OrgDropDownVO> 响应参数
     */
    List<OrgDropDownVO> queryOrgDropDown(OrgDropDownAO ao);
}